home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 404_02 / bisnp / diffFile < prev    next >
Text File  |  1993-11-16  |  11KB  |  488 lines

  1. ===============================================================================
  2. #! /bin/sh -x
  3. if [ $1x != x ] ; then cd $1 ; fi
  4. # conversion from bison++-1.21-6 to bison++-1.21-7
  5. # directory .
  6. # file ./ChangeLog changed
  7. ed - ./ChangeLog << '-@-END-@-'
  8. 0a
  9. Changes between 1.19-6 and 1.21-7
  10.     - bison.cc, bison.h : use macro to simulate goto in yyparse. for sun c++.
  11.     - bison.cc : mismatch in #if between YY_USE_CLASS and compatibility just
  12.         before including #define tokens. added a #endif and a #ifndef YY_USE_CLASS
  13.     - generate enum to replace enventually the static const
  14.     - output.c, files.c : manage to put #line in generated code, such that the generated code is correctly indicated in the output file.
  15. .
  16. w
  17. q
  18. -@-END-@-
  19. # file ./files.c changed
  20. ed - ./files.c << '-@-END-@-'
  21. 469a
  22.           lftmp++;
  23. .
  24. 467c
  25.         {if(c=='\n') lftmp++;
  26.          if(c==*pospattern++ && c)
  27.           {if(*pospattern==0)
  28.             {fprintf(ftmp,"%d \"%s\"",lftmp+1
  29.                                              ,quoted_filename(defsfile));
  30.                      pospattern=pattern;continue;}
  31.           }
  32.          else pospattern=pattern;
  33.          putc(c,ftmp);
  34.         }
  35. .
  36. 463a
  37.           lftmp+=2;
  38. .
  39. 460c
  40.     { lftmp=1;
  41. .
  42. 455c
  43.     {if(c=='\n') lftmp++;
  44.      if(c== *pospattern++ && c)
  45.           {if(*pospattern==0)
  46.             {fprintf(ftmp,"%d \"%s\"",lftmp+1, quoted_filename(tabfile));
  47.              pospattern=pattern;continue;}
  48.           }
  49.          else pospattern=pattern;
  50.          putc(c,ftmp);
  51.         }
  52. .
  53. 452c
  54.       lftmp++;
  55. .
  56. 450a
  57.  
  58. .
  59. 448c
  60.       int lftmp=1;
  61.       char *pattern="\n#line @";
  62.       char *pospattern=pattern;
  63. .
  64. w
  65. q
  66. -@-END-@-
  67. # file ./output.c changed
  68. ed - ./output.c << '-@-END-@-'
  69. 1579a
  70. };
  71. /* create a list like
  72.     ,FIRST_TOKEN=256
  73.     ,SECOND_TOKEN=257
  74. */
  75. void output_token_enum(file)
  76. FILE *file;
  77. {
  78.  output_token_defines_fmt(file,"\t,%s=%d\n",0);
  79.  if (semantic_parser) /* just for compatibility with semantic parser */
  80.   output_token_defines_fmt(file,"\t,T%s=%d\n",1);
  81. .
  82. 1547a
  83.       output_section(fhskel,fdefines);  /* new section */
  84.       output_token_enum(fdefines); /* enum */
  85. .
  86. 1538a
  87.   output_section(fparser,ftable);  /* new section */
  88.   output_token_enum(ftable); /* enum */
  89. .
  90. 1405a
  91.                 }
  92. .
  93. 1403,1404c
  94.            {fprintf(fout,
  95.                 "\n/* #line %d \"%s\" */\n#line @\n",
  96. .
  97. 183a
  98. void output_token_enum();
  99. .
  100. w
  101. q
  102. -@-END-@-
  103. # file ./version.c changed
  104. ed - ./version.c << '-@-END-@-'
  105. 1c
  106. char *version_string = "bison++ Version 1.21-7, adapted from GNU bison by coetmeur@icdc.fr\n";
  107. .
  108. w
  109. q
  110. -@-END-@-
  111. # file ./bison.cc changed
  112. ed - ./bison.cc << '-@-END-@-'
  113. 905c
  114.   YYGOTO(yynewstate);
  115. /* end loop, in which YYGOTO may be used. */
  116.   YYENDGOTO
  117. .
  118. 889c
  119.     YYGOTO(yyerrpop);
  120. .
  121. 886c
  122.       YYGOTO(yyreduce);
  123. .
  124. 884c
  125.     YYGOTO(yyerrpop);
  126. .
  127. 878c
  128.     YYGOTO(yyerrdefault);
  129. .
  130. 874c
  131.     YYGOTO(yyerrdefault);
  132. .
  133. 870c
  134. YYLABEL(yyerrhandle)
  135. .
  136. 850c
  137. YYLABEL(yyerrpop)   /* pop the current state because it cannot handle the error token */
  138. .
  139. 847c
  140.   if (yyn) YYGOTO(yydefault);
  141. .
  142. 841c
  143. YYLABEL(yyerrdefault)  /* current state does not do anything special for the error token. */
  144. .
  145. 839c
  146.   YYGOTO(yyerrhandle);
  147. .
  148. 815,816c
  149.   YYGOTO(yyerrlab1);
  150. YYLABEL(yyerrlab1)   /* here on error raised explicitly by an action */
  151. .
  152. 764c
  153. YYLABEL(yyerrlab)   /* here on detecting error */
  154. .
  155. 762c
  156.   YYGOTO(yynewstate);
  157. .
  158. 692c
  159. YYLABEL(yyreduce)
  160. .
  161. 689c
  162.     YYGOTO(yyerrlab);
  163. .
  164. 685c
  165. YYLABEL(yydefault)
  166. .
  167. 682c
  168.   YYGOTO(yynewstate);
  169. .
  170. 657c
  171.     YYGOTO(yyerrlab);
  172. .
  173. 654c
  174.       YYGOTO(yyreduce);
  175. .
  176. 652c
  177.     YYGOTO(yyerrlab);
  178. .
  179. 638c
  180.     YYGOTO(yydefault);
  181. .
  182. 590c
  183.     YYGOTO(yydefault);
  184. .
  185. 584c
  186. /* YYLABEL(yyresume) */
  187. .
  188. 579,580c
  189.   YYGOTO(yybackup);
  190. YYLABEL(yybackup)
  191. .
  192. 500c
  193. YYLABEL(yynewstate)
  194. .
  195. 480d
  196. 474a
  197. /* start loop, in which YYGOTO may be used. */
  198. YYBEGINGOTO
  199. .
  200. 392a
  201.  
  202. .
  203. 391d
  204. 332c
  205.       YYGOTO(yybackup);                                            \
  206. .
  207. 324c
  208. #define YYFAIL          YYGOTO(yyerrlab)
  209. .
  210. 319c
  211. #define YYERROR         YYGOTO(yyerrlab1)
  212. .
  213. 312a
  214. #if YY_@_USE_GOTO != 0
  215. /*
  216.  SUPRESSION OF GOTO : on some C++ compiler (sun c++)
  217.   the goto is strictly forbidden if any constructor/destructor
  218.   is used in the whole function (very stupid isn't it ?)
  219.  so goto are to be replaced with a 'while/switch/case construct'
  220.  here are the macro to keep some apparent compatibility
  221. */
  222. #define YYGOTO(lb) {yy_gotostate=lb;continue;}
  223. #define YYBEGINGOTO  enum yy_labels yy_gotostate=yygotostart; \
  224.                      for(;;) switch(yy_gotostate) { case yygotostart: {
  225. #define YYLABEL(lb) } case lb: {
  226. #define YYENDGOTO } }
  227. #define YYBEGINDECLARELABEL enum yy_labels {yygotostart
  228. #define YYDECLARELABEL(lb) ,lb
  229. #define YYENDDECLARELABEL  };
  230. #else
  231. /* macro to keep goto */
  232. #define YYGOTO(lb) goto lb
  233. #define YYBEGINGOTO
  234. #define YYLABEL(lb) lb:
  235. #define YYENDGOTO
  236. #define YYBEGINDECLARELABEL
  237. #define YYDECLARELABEL(lb)
  238. #define YYENDDECLARELABEL
  239. #endif
  240. /* LABEL DECLARATION */
  241. YYBEGINDECLARELABEL
  242.   YYDECLARELABEL(yynewstate)
  243.   YYDECLARELABEL(yybackup)
  244. /* YYDECLARELABEL(yyresume) */
  245.   YYDECLARELABEL(yydefault)
  246.   YYDECLARELABEL(yyreduce)
  247.   YYDECLARELABEL(yyerrlab)   /* here on detecting error */
  248.   YYDECLARELABEL(yyerrlab1)   /* here on error raised explicitly by an action */
  249.   YYDECLARELABEL(yyerrdefault)  /* current state does not do anything special for the error token. */
  250.   YYDECLARELABEL(yyerrpop)   /* pop the current state because it cannot handle the error token */
  251.   YYDECLARELABEL(yyerrhandle)
  252. YYENDDECLARELABEL
  253.  
  254. .
  255. 289a
  256. #endif
  257. .
  258. 288a
  259. #if YY_@_USE_CONST_TOKEN != 0
  260. .
  261. 261a
  262. #else
  263. enum YY_@_ENUM_TOKEN { YY_@_NULL_TOKEN=0
  264. $ /* enum token */
  265.      }; /* end of enum declaration */
  266. #endif
  267. .
  268. 260c
  269. public:
  270. #if YY_@_USE_CONST_TOKEN != 0
  271. /* static const int token ... */
  272. .
  273. 256a
  274. /* choose between enum and const */
  275. #ifndef YY_@_USE_CONST_TOKEN
  276. #define YY_@_USE_CONST_TOKEN 0
  277. /* yes enum is more compatible with flex,  */
  278. /* so by default we use it */
  279. #endif
  280. #if YY_@_USE_CONST_TOKEN != 0
  281. #ifndef YY_@_ENUM_TOKEN
  282. #define YY_@_ENUM_TOKEN yy_@_enum_token
  283. #endif
  284. #endif
  285. .
  286. 229c
  287. #endif
  288. #ifndef YY_USE_CLASS
  289. /* TOKEN C */
  290. .
  291. 194d
  292. 110a
  293. /* use no goto to be clean in C++ */
  294. #ifndef YY_@_USE_GOTO
  295. #define YY_@_USE_GOTO 0
  296. #endif
  297.  
  298. .
  299. 109a
  300. #endif
  301. .
  302. 108a
  303. /* use goto to be compatible */
  304. #ifndef YY_@_USE_GOTO
  305. #define YY_@_USE_GOTO 1
  306. .
  307. w
  308. q
  309. -@-END-@-
  310. # file ./bison.h changed
  311. ed - ./bison.h << '-@-END-@-'
  312. 160a
  313. #else
  314. enum YY_@_ENUM_TOKEN { YY_@_NULL_TOKEN=0
  315. $ /* enum token */
  316.      }; /* end of enum declaration */
  317. #endif
  318. .
  319. 159c
  320. public:
  321. #if YY_@_USE_CONST_TOKEN != 0
  322. /* static const int token ... */
  323. .
  324. 155a
  325. /* choose between enum and const */
  326. #ifndef YY_@_USE_CONST_TOKEN
  327. #define YY_@_USE_CONST_TOKEN 0
  328. /* yes enum is more compatible with flex,  */
  329. /* so by default we use it */
  330. #endif
  331. #if YY_@_USE_CONST_TOKEN != 0
  332. #ifndef YY_@_ENUM_TOKEN
  333. #define YY_@_ENUM_TOKEN yy_@_enum_token
  334. #endif
  335. #endif
  336. .
  337. 52a
  338. /* use no goto to be clean in C++ */
  339. #ifndef YY_@_USE_GOTO
  340. #define YY_@_USE_GOTO 0
  341. #endif
  342.  
  343. .
  344. 51a
  345. #endif
  346. .
  347. 50a
  348. /* use goto to be compatible */
  349. #ifndef YY_@_USE_GOTO
  350. #define YY_@_USE_GOTO 1
  351. .
  352. w
  353. q
  354. -@-END-@-
  355. # file ./bison++.1.dman changed
  356. ed - ./bison++.1.dman << '-@-END-@-'
  357. 239c
  358.     Based on GNU version 1.21 of bison. Modified by the author.
  359. .
  360. 230a
  361.     "iostream" : this is a great demand. this work will be done as soon as possible. The virtual members permit such work still easily.
  362. .
  363. 222c
  364.     Header is not included in the parser code. Change made in the generated header are not used in the parser code, even if you include it volontarily, since it is guarded against re-include. So don't modify it.
  365. .
  366. 192,195d
  367. 160,165c
  368.     public:
  369.         enum yy_parser_enum_token \{ YY_parser_NULL_TOKEN
  370.     > ,TOKEN_FIRST=256
  371.     > ,TOKEN_NEXT=257
  372.     > ,AND_SO_ON=258
  373.     \} ;
  374. .
  375. 135,136c
  376.     #if \%USE_CONST_TOKEN != 0
  377.     >const \%CLASS::TOKEN_FIRST=1;
  378.     >...
  379.     #endif
  380. .
  381. 102a
  382.     #else
  383.         enum \%ENUM_TOKEN \{ \%NULL_TOKEN
  384.     > ,TOKEN_FIRST=256
  385.     > ,TOKEN_NEXT=257
  386.     > ,AND_SO_ON=258
  387.     \} ;
  388.     // ...
  389.     #endif
  390. .
  391. 96,99c
  392.     public:
  393.     #if \%USE_CONST_TOKEN != 0
  394. .
  395. 49a
  396.     -{"USE_GOTO"} Indicates (if defined as 1) that "goto" are to be used  (for backward compatibility) in the parser function. By default "goto" are replaced with a "switch" construction, to avoid problems with some compiler that don't support "goto" and destructor in the same function block. If "COMPATIBILITY" is 1, and "USE_GOTO" is not defined, then "USE_GOTO" is defined to 1, to be com